package cn.tedu.user.management.service;

import cn.tedu.rtms.commons.pojo.vo.PageData;
import cn.tedu.user.management.pojo.param.JobAddNewParam;
import cn.tedu.user.management.pojo.param.JobUpdateInfoParam;
import cn.tedu.user.management.pojo.vo.JobEnableListItemVO;
import cn.tedu.user.management.pojo.vo.JobListItemVO;
import cn.tedu.user.management.pojo.vo.JobStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 处理职位数据的业务接口
 *
 * @author java@tedu.cn
 * @version 0.0.1
 */
@Transactional
public interface IJobService {

    /**
     * 类别“是否启用”的状态文本
     */
    String ENABLE_TEXT[] = {"禁用", "启用"};

     /**
     * 添加职位
     *
     * @param jobAddNewParam 职位数据
     */
    void addNew(JobAddNewParam jobAddNewParam);

    /**
     * 删除职位
     *
     * @param id 职位ID
     */
    void delete(Long id);

     /**
     * 查询职位列表，将使用默认的每页记录数
     *
     * @param pageNum 页码
     * @return 职位列表
     */
    PageData<JobListItemVO> list(Integer pageNum);

    /**
     * 查询职位列表
     *
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 职位列表
     */
    PageData<JobListItemVO> list(Integer pageNum, Integer pageSize);

    /**
     * 修改职位信息
     *
     * @param id               被修改职位的ID
     * @param jobUpdateInfoParam 的新职位数据
     */
    void updateInfoById(Long id, JobUpdateInfoParam jobUpdateInfoParam);

    /**
     * 根据ID查询职位信息
     *
     * @param id 职位ID
     * @return 匹配的职位数据，如果没有匹配的数据，则返回null
     */

    JobStandardVO getStandardById(Long id);

    /**
     * 启用招聘
     *
     * @param id 职位ID
     */
    void setEnable(Long id);

    /**
     * 禁用招聘
     *
     * @param id 职位ID
     */
    void setDisable(Long id);


    /*
    * 查询招聘职位
    */
    List<JobEnableListItemVO> enableList(Long sectionId);

    /**
     * 根据关键字查找职位信息
     *
     * @return 职位列表
     */
    List<JobListItemVO> selectByKeywords(String Keywords);

}
